package com.tan.collection.linkList;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;

public class LinkedListTest {
    /**
     * 这段程序主要是：把b链表添加到a链表当中。其中b在添加的时候，每添加一次跳过b中的一个元素。跳过的元素没被添加。
     * 跳过的元素  没有被删除。跳过的元素没有遍历添加到a链表当中。
     *
     * */
    public static void main(String[] args) {
        /**
         * 创建一个 第一个链表
         * */
        List<String> a = new LinkedList<>();
        a.add("Amy");
        a.add("Carl");
        a.add("Erica");

        /**
         * 创建第二个链表
         * */
        List<String> b = new LinkedList<>();
        b.add("Bob");
        b.add("Doug");
        b.add("Frances");
        b.add("Gloria");

        /**
         * 把b合并到a
         * merge the words from b into a.
         * */
        ListIterator<String> aIter = a.listIterator();
        //创建一个a的链表迭代器

        Iterator<String> bIter = b.iterator();
        //创建一个b的链表迭代器

        while (bIter.hasNext()){
            //判断b链表  是否还有下一个元素
            if (aIter.hasNext());
                //判断a链表是否还有下一个元素
                //遍历a链表

            aIter.add(bIter.next());
            //向a链表添加b链表的元素
            System.out.println(a);
        }
        System.out.println(a);

        bIter = b.iterator();
        while (bIter.hasNext()){
            //首先判断，是否还有下一个元素。
            bIter.next();

            if (bIter.hasNext()) {
                bIter.next();
                //遍历器光标 ，越过某一个元素才可以被删除。跳过下一个元素
                bIter.remove();
                //调用删除光标越过的元素。
            }
        }
        System.out.println("输出的是 b："+b);
        //bulk operation:remove all words in b from a
        a.removeAll(b);
        System.out.println("输出的是 a: "+a);
    }
}
